/**
 * 动态规划升级版，只用一个变量记录最大值
 * @param {number[]} nums
 * @return {number}
 */


var maxSubArray = function (nums) {

  const len = nums.length;

  let g = nums[0];
  let maxSum = g; // 只使用一个变量记录最大值

  for (let i = 1; i < len; i++) {
    if (g > 0) {
      g += nums[i];
    } else {
      g = nums[i];
    }
    // 更改最大值
    maxSum = Math.max(g, maxSum)
  }
  return maxSum;
}

console.log(maxSubArray([-2, 1, -3, 4, -1, 2, 1, -5, 4]))